package my.xh.validate;

import java.lang.annotation.*;

@Retention(RetentionPolicy.RUNTIME)  
@Target(ElementType.METHOD) 
@Repeatable(ValidateGroup.class)
public @interface ValidateField {  
      
    /** 
     * 参数索引位置 
     */  
    public int index() default -1 ;  
      
    /** 
     * 如果参数是基本数据类型或String ，就不用指定该参数，如果参数是对象，要验证对象里面某个属性，就用该参数指定属性名 
     */  
    public String filedName() default "" ;
    
    /** 
     * 如果参数是Map，要验证Map里面某键值，就用该参数指定key
     */ 
    public String key() default "" ; 
    
    /** 
     * 正则验证 
     */  
    public String regStr() default "";  
      
    /** 
     * 是否能为空  ， 为true表示不能为空 ， false表示能够为空 
     */  
    public boolean notNull() default false;  
      
    /** 
     * 是否能为空  ， 为true表示不能为空 ， false表示能够为空 
     */  
    public int maxLen() default -1 ;  
      
    /** 
     * 最小长度 ， 用户验证字符串 
     */  
    public int minLen() default -1 ;  
      
    /** 
     *最大值 ，用于验证数字类型数据 
     */  
    public int maxVal() default -1 ;  
      
    /** 
     *最小值 ，用于验证数值类型数据 
     */  
    public int minVal() default -1 ;  
    /**
     * 
    * @Title: strVals 
    * @Description: 列举出允许的字符串值 
    * @return
    * @return: String[]
    * @date 2018年6月30日 下午8:36:10   @author xuanhu
     */
    public String[]  strVals() default {} ; 
    /**
     * 
    * @Title: intVals 
    * @Description: 列举出允许的整数值  
    * @return
    * @return: int[]
    * @date 2018年6月30日 下午8:37:38   @author xuanhu
     */
    public int[]  intVals() default {} ;
    /** @MethodName dateRule
      * @Description  日期校验规则 "<|>,now|yyyy-MM-ss HH:mm:ss[,1,YEAR|MONTH|DAY_OF_YEAR|HOUR|SECOND|MINUTE]"
      *                  例 ： "<,now,2,year" 小于当前日期两年
      * @Param []
      * @return java.lang.String
      * @Author xuanhu
      * @Date 2019/1/17 15:36
     **/
    public String dateRule() default "";
    /**
     * @Author xh
     * @Description  自定义提示消息
     * @Date 17:16 2019/9/3
     * @Param []
     * @return java.lang.String
     **/
    public String msg() default "";
    /**
     * @Author xh
     * @Description  赋给默认值
     * @Date 17:16 2019/9/3
     * @Param []
     * @return java.lang.String
     **/
    public String defalut() default "";
}  